// import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
// import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
// import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerOutput;
// import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock;
// import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerTop;
// import com.alibaba.druid.sql.dialect.sqlserver.ast.expr.SQLServerObjectReferenceExpr;
// import com.alibaba.druid.sql.dialect.sqlserver.ast.stmt.*;
// import com.alibaba.druid.sql.dialect.sqlserver.ast.stmt.SQLServerExecStatement.SQLServerParameter;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../../../visitor/SQLASTVisitor.h"
#include "../../../../utils/BOOL.h"
class SQLServerSelectQueryBlock;
class SQLServerTop;
class SQLServerObjectReferenceExpr;
class SQLServerInsertStatement;
class SQLServerUpdateStatement;
class SQLServerExecStatement;
class SQLServerSetTransactionIsolationLevelStatement;
class SQLServerOutput;
class SQLServerRollbackStatement;
class SQLServerWaitForStatement;

class SQLServerASTVisitor :virtual public SQLASTVisitor
{
public:
  bool visit(SQLServerSelectQueryBlock_ptr x);
  void endVisit(SQLServerSelectQueryBlock_ptr x);

  BOOL_ptr visit(SQLServerTop_ptr x)
  {
    return BOOL::TRUE;
  }

  void endVisit(SQLServerTop_ptr x)
  {
  }

  BOOL_ptr visit(SQLServerObjectReferenceExpr_ptr x)
  {
    return BOOL::TRUE;
  }

  void endVisit(SQLServerObjectReferenceExpr_ptr x)
  {
  }

  bool visit(SQLServerInsertStatement_ptr x);
  void endVisit(SQLServerInsertStatement_ptr x);

  BOOL_ptr visit(SQLServerUpdateStatement_ptr x)
  {
    return BOOL::TRUE;
  }

  void endVisit(SQLServerUpdateStatement_ptr x)
  {
  }

  BOOL_ptr visit(SQLServerExecStatement_ptr x)
  {
    return BOOL::TRUE;
  }

  void endVisit(SQLServerExecStatement_ptr x)
  {
  }

  BOOL_ptr visit(SQLServerSetTransactionIsolationLevelStatement_ptr x)
  {
    return BOOL::TRUE;
  }

  void endVisit(SQLServerSetTransactionIsolationLevelStatement_ptr x)
  {
  }

  BOOL_ptr visit(SQLServerOutput_ptr x)
  {
    return BOOL::TRUE;
  }

  void endVisit(SQLServerOutput_ptr x)
  {
  }

  BOOL_ptr visit(SQLServerRollbackStatement_ptr x)
  {
    return BOOL::TRUE;
  }

  void endVisit(SQLServerRollbackStatement_ptr x)
  {
  }

  BOOL_ptr visit(SQLServerWaitForStatement_ptr x)
  {
    return BOOL::TRUE;
  }

  void endVisit(SQLServerWaitForStatement_ptr x)
  {
  }

  BOOL_ptr visit(SQLServerExecStatement_SQLServerParameter_ptr x)
  {
    return BOOL::TRUE;
  }

  void endVisit(SQLServerExecStatement_SQLServerParameter_ptr x)
  {
  }
};
